package com.snowfield.lb47.lbconfig.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.snowfield.lb47.lbconfig.domain.Backserver;

import javax.annotation.PostConstruct;

/**
 * 后端服务器Service接口
 *
 * @author snowfield
 * @date 2024-03-25
 */
public interface IBackserverService {
    /**
     * 1.重新加载后端服务器数据到缓存中
     * 2.重新加载后端服务器概要信息到缓存中
     * <p>
     * 相当于每次tomcat生新启动后,都重新加载一次数据
     */
    public void initCache();

    /**
     * 查询后端服务器
     *
     * @param id 后端服务器主键
     * @return 后端服务器
     */
    public Backserver selectBackserverById(Long id);

    /**
     * 查询后端服务器列表
     *
     * @param backserver 后端服务器
     * @return 后端服务器集合
     */
    public List<Backserver> selectBackserverList(Backserver backserver);

    /**
     * 新增后端服务器
     *
     * @param backserver 后端服务器
     * @return 结果
     */
    public int insertBackserver(Backserver backserver);

    /**
     * 修改后端服务器
     *
     * @param backserver 后端服务器
     * @return 结果
     */
    public int updateBackserver(Backserver backserver);

    /**
     * 批量删除后端服务器
     *
     * @param ids 需要删除的后端服务器主键集合
     * @return 结果
     */
    public int deleteBackserverByIds(Long[] ids);

    /**
     * 删除后端服务器信息
     *
     * @param id 后端服务器主键
     * @return 结果
     */
    public int deleteBackserverById(Long id);

    /**
     * 校验后端服务器名称是否唯一
     *
     * @param backserver 后端服务器
     * @return 结果
     */
    public Boolean checkNameUnique(Backserver backserver);

    /**
     * 校验后端服务器IP地址是否唯一
     *
     * @param backserver 后端服务器
     * @return 结果
     */
    public Boolean checkIpUnique(Backserver backserver);

    /**
     * 获取后端服务器IP地址与名称的对应关系
     *
     * @return 结果
     */
    public HashMap<String, String> selectServerIPNameMap();

    /**
     * 获取后端服务器概要信息
     *
     * @return 结果
     */
    public Map<String, Map<String, String>> selectServerSummary();
}
